package unq.edu.cui.tp.arena;
import unq.edu.cui.tp.dominio.Sistema;
import unq.edu.cui.tp.modelo.ventanas.AgregarRestriccion;
import unq.edu.cui.tp.modelo.ventanas.Restriccion;
import unq.edu.cui.tp.modelo.ventanas.RestriccionesDeEmpleados;

import java.awt.Color;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.bindings.NotNullObservable;
import org.uqbar.arena.layout.ColumnLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.SimpleWindow;
import org.uqbar.arena.windows.WindowOwner;

public class RestriccionesDeEmpleadosWindow extends SimpleWindow<RestriccionesDeEmpleados> {

	public RestriccionesDeEmpleadosWindow(WindowOwner parent,RestriccionesDeEmpleados modeloVentana) {
		super(parent, modeloVentana);
	}
	@Override
	protected void createMainTemplate(Panel mainPanel) {
		this.setTitle("Restricciones de empleados");
		this.setTaskDescription("");
		super.createMainTemplate(mainPanel);
		this.createGrid(mainPanel);

	}
	@Override
protected void createFormPanel(Panel mainPanel) {
		Panel formPanel = new Panel(mainPanel);
		formPanel.setLayout(new ColumnLayout(2));
		
}
	@Override
	protected void addActions(Panel actionsPanel) {
		
		new Button(actionsPanel).setCaption("Agregar").onClick(new MessageSend(this, "agregarRestriccion"));
		
		Button remove = new Button(actionsPanel);
		remove.setCaption("Eliminar");
		remove.onClick(new MessageSend(this.getModelObject(), "eliminarRestriccion"));
		
		// Deshabilitar el boton 'Borrar' si no hay ningún elemento seleccionado en la tabla.
		NotNullObservable elementSelected = new NotNullObservable("restriccionSeleccionada");
		remove.bindEnabled(elementSelected);
	}
	
	protected void createGrid(Panel mainPanel) {
		Table<Restriccion> table = new Table<Restriccion>(mainPanel, Restriccion.class);
		table.setHeigth(200);
		table.setWidth(450);

		table.bindItemsToProperty("sistema.restricciones");
		table.bindValueToProperty("restriccionSeleccionada");

		this.describeGrid(table);
	}
		
	protected void describeGrid(Table<Restriccion> table) {
		new Column<Restriccion>(table)
		.setTitle("Empleado")
		.setFixedSize(200)
		.bindContentsToProperty("nombreyapellido");
			
		new Column<Restriccion>(table)
		.setTitle("Fecha")
		.setFixedSize(250)
		.bindContentsToProperty("fechaSimple");
	}
		

	// ********************************************************
	// ** Acciones de botones
	// ********************************************************	
	public void agregarRestriccion() {
		new AgregarRestriccionesWindow(this, new AgregarRestriccion(this.getModelObject().getSistema())).open();
	}
	
	public void eliminarRestriccion(){
		this.getModelObject().eliminarRestriccion();
	}
}	

